package com.account.core.service;

import com.account.core.domain.Account;
import com.account.core.dto.UpdatePasswordRequest;
import com.account.core.dto.UserCreateRequest;

import java.util.List;

/**
 * 账号Service接口
 *
 * @author ylstech
 * @date 2025-07-07
 */
public interface IAccountService {
    /**
     * 查询账号
     *
     * @param id 账号主键
     * @return 账号
     */
    Account selectAccountById(Long id);

    /**
     * 批量查询账号
     *
     * @param ids 需要删除的账号主键集合
     * @return 账号集合
     */
    List<Account> selectAccountByIds(Long[] ids);

    /**
     * 查询账号列表
     *
     * @param account 账号
     * @return 账号集合
     */
    List<Account> selectAccountList(Account account);

    /**
     * 新增账号
     *
     * @param req 账号
     * @return 结果
     */
    void insertAccount(UserCreateRequest req);

    /**
     * 修改账号
     *
     * @param account 账号
     * @return 结果
     */
    void updateAccount(Account account);

    /**
     * 修改密码
     *
     * @param req
     * @return 结果
     */
    void resetPassword(UpdatePasswordRequest req);

    /**
     * 批量删除账号
     *
     * @param ids 需要删除的账号主键集合
     * @return 结果
     */
    void deleteAccountByIds(String[] ids);

    /**
     * 删除账号信息
     *
     * @param id 账号主键
     * @return 结果
     */
    void deleteAccountById(String id);

}
